home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC]
/
NeXTSTEP 3.3 Dev Intel.iso
/
NextDeveloper
/
Headers
/
architecture
/
i386
/
byte_order.h
< prev
next >
Wrap
Text File
|
1993-03-12
|
2KB
|
136 lines
/*
* Copyright (c) 1992 NeXT Computer, Inc.
*
* Byte ordering conversion (for i386).
*
* HISTORY
*
* 8 October 1992 David E. Bohman at NeXT
* Converted to NXxxx versions. Condensed history.
*
* 18 May 1992 David E. Bohman at NeXT
* Created.
*/
static __inline__
unsigned short
NXSwapShort(
unsigned short inv
)
{
unsigned short outv;
__asm__ volatile(
"rorw $8,%0"
: "=r" (outv)
: "0" (inv));
return (outv);
}
static __inline__
unsigned int
NXSwapInt(
unsigned int inv
)
{
unsigned int outv;
__asm__ volatile(
"bswap %0"
: "=r" (outv)
: "0" (inv));
return (outv);
}
static __inline__
unsigned long
NXSwapLong(
unsigned long inv
)
{
unsigned long outv;
__asm__ volatile(
"bswap %0"
: "=r" (outv)
: "0" (inv));
return (outv);
}
static __inline__
unsigned long long
NXSwapLongLong(
unsigned long long inv
)
{
union llconv {
unsigned long long ull;
unsigned long ul[2];
} *inp, outv;
inp = (union llconv *)&inv;
outv.ul[0] = NXSwapLong(inp->ul[1]);
outv.ul[1] = NXSwapLong(inp->ul[0]);
return (outv.ull);
}
static __inline__ NXSwappedFloat
NXConvertHostFloatToSwapped(float x)
{
union fconv {
float number;
NXSwappedFloat sf;
};
return ((union fconv *)&x)->sf;
}
static __inline__ float
NXConvertSwappedFloatToHost(NXSwappedFloat x)
{
union fconv {
float number;
NXSwappedFloat sf;
};
return ((union fconv *)&x)->number;
}
static __inline__ NXSwappedDouble
NXConvertHostDoubleToSwapped(double x)
{
union dconv {
double number;
NXSwappedDouble sd;
};
return ((union dconv *)&x)->sd;
}
static __inline__ double
NXConvertSwappedDoubleToHost(NXSwappedDouble x)
{
union dconv {
double number;
NXSwappedDouble sd;
};
return ((union dconv *)&x)->number;
}
static __inline__ NXSwappedFloat
NXSwapFloat(NXSwappedFloat x)
{
return NXSwapLong(x);
}
static __inline__ NXSwappedDouble
NXSwapDouble(NXSwappedDouble x)
{
return NXSwapLongLong(x);
}